package DAO;

/**
 *
 * @author ebastos
 */
import static Conexao.ConexaoBancoDeDados.getConexao;
import Model.BeanEstado;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class DAOEstado {

    public DAOEstado() {
    }
    
    private BeanEstado GetEstado(ResultSet rs) {
        try {
            if (rs.first()) {
                BeanEstado estado = new BeanEstado();
                estado.setDescricao(rs.getString("descricao"));
                estado.setSigla(rs.getString("sigla"));
                estado.setID(rs.getInt("id"));
                return estado;
            } else {
                //Não retornou nenhuma linha
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    private ArrayList<BeanEstado> GetEstados(ResultSet rs) {
        try {
            if (rs.first()) {
                ArrayList<BeanEstado> retorno = new ArrayList<>();
                BeanEstado estado = new BeanEstado();
                estado.setDescricao(rs.getString("descricao"));
                estado.setSigla(rs.getString("sigla"));
                estado.setID(rs.getInt("id"));
                retorno.add(estado);
                while (rs.next()) {
                    estado = new BeanEstado();
                    estado.setDescricao(rs.getString("descricao"));
                    estado.setSigla(rs.getString("sigla"));
                    estado.setID(rs.getInt("id"));
                    retorno.add(estado);
                }
                return retorno;
            } else {
                //Não retornou nenhuma linha
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    public BeanEstado RetornaEstado(int ID) {
        try (Connection conn = getConexao()) {
            String sql;
            sql = "SELECT * FROM estado WHERE ID = ?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, String.valueOf(ID));
            ResultSet rs = ps.executeQuery();
            return GetEstado(rs);
        } catch (SQLException e) {
            return null;
        }
    }
    
    public ArrayList<BeanEstado> RetornaEstados(){
        try (Connection conn = getConexao()) {
            String sql;
            sql = "SELECT * FROM estado";
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            return GetEstados(rs);
        } catch (SQLException e) {
            return null;
        }
    }

}
